package com.internetCafes.spms.web.customer.mapper.user;

import com.baomidou.mybatisplus.annotation.SqlParser;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.internetCafes.spms.core.annotation.NoTentant;
import com.internetCafes.spms.web.customer.entity.user.EntUserInfo;
import com.internetCafes.spms.web.customer.model.user.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 用户表 Mapper 接口
 * </p>
 * 由于该表格中 tenantId 为deptId管理，所以放弃拦截管控，由自己进行添加租户id
 *
 * @author Zj
 * @since 2021-10-15
 */
@SqlParser(filter = true)
@Mapper
public interface EntUserInfoMapper extends BaseMapper<EntUserInfo> {

    /**
     * 无租户过滤获取企业用户id
     *
     * @param entUserInfoDo 请求参数
     * @return 用户列表
     */
    @SqlParser(filter = true)
    List<EntUserInfoPo> listPoNoTenantId(@Param("entUserInfoDo") EntUserInfoDo entUserInfoDo);

    /**
     * 统计用户扩展信息
     *
     * @param userIdList 用户id列表
     */
    Integer countUserExtendInfoByIds(@Param("userIdList") List<Long> userIdList);

    /**
     * 用户列表
     */
    @NoTentant
    List<UserPo> userPoList(@Param("userDo") UserDo userDo);

    /**
     * 用户员工信息列表
     */
    List<EntUserEmployeeInfoListPo> userEmployeeInfoListPo(@Param("listDo") EntUserEmployeeInfoListDo listDo);

    /**
     * 获取角色信息详情列表
     */
    List<EntUserDetailListPo> userDetailList(@Param("listDo") EntUserDetailListDo listDo);

    /**
     * 获取区域销售列表
     */
    @NoTentant
    List<EntUserInfo> saleListByAreaId(Long areaId);

    /**
     * 分页
     */
    @NoTentant
    Page<EntUserInfoPo> poPaging(Page<EntUserInfo> page, @Param("userInfoDo") UserInfoDo userInfoDo);

    /**
     * 列表
     */
    @NoTentant
    List<EntUserInfoPo> poList(@Param("ew") Wrapper<EntUserInfo> queryWrapper);
}
